/**
 * @(#)GruppenkalenderServer.java
 * 1.0, 2013-01-24
 */
package de.hdm.gruppenkalender.team04;

import de.hdm.gruppenkalender.team04.db.*;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;

/**
 * RMI-Server, der gestartet wird um die eigentlichen RMI-Server-Objekte zu
 * instantiieren.
 * <p>
 * In Anlehung an:
 * de.hdm.thies.bankprojekt.BankServer
 * 
 * @author Prof. Dr. Peter Thies
 *
 * @author Mathias Bendel (mb167)
 * @author Björn Fichnter (bf023)
 * @author Stefan Hettich (sh176)
 * @author René Kugel (rk044)
 * @author Mark Leonberger (ml072)
 * @author Marta Przybylski (mp070)
 *
 * @version 1.0, 2013-01-24
 * 
 */
public class GruppenkalenderServer {

    /**
     * Das Verwaltungsobjekt, mittels dessen Kalender, Kalendereinträge,
     * Kategorien und Personen verwaltet werden.
     */
    private GruppenkalenderVerwaltung verwaltung = null;

    public GruppenkalenderServer() {
        try {
            /**
             * Für den Gruppenkalender wird eine Verwaltung benötigt,
             * in dieser werden wichtige Aktivitäten vorgehalten.
             *
             * Die Verwaltung muss wissen, welche Mapper zur Verfügung stehen,
             * um Daten in die Datenbank zu transportieren zu können.
             */
            verwaltung = new GruppenkalenderVerwaltungImpl(
                    AlarmMapper.alarmMapper(),
                    KalendereintragMapper.kalendereintragMapper(),
                    KalenderMapper.kalenderMapper(),
                    KategorieMapper.kategorieMapper(),
                    PersonMapper.personMapper(),
                    TerminMapper.terminMapper(),
                    WiederholungMapper.wiederholungMapper(),
                    TerminTeilnahmeMapper.terminTeilnahmeMapper(),
                    KalenderZugriffMapper.kalenderZugriffMapper());

            /**
             * Das Verwaltungsobjekt wird bei einer RMI-Registry angemeldet.
             */
            Naming.rebind("rmi://127.0.0.1:1099/GruppenkalenderVerwaltung",
                    verwaltung);
            System.out.println(
                    "GruppenkalenderVerwaltung in Registry eingetragen...");
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        } catch (RemoteException ex) {
            ex.printStackTrace();
        }
    }

    /**
     * Main-Methode der ausführbaren Klasse, wird beim Ausführen der Datei
     * ausgeführt.
     * 
     * @param args
     */
    public static void main(String[] args) {
        GruppenkalenderServer server = new GruppenkalenderServer();
        System.out.println("Server gestartet...");
    }
}
